package com.cyy.list;

/**
 * List 接口
 * @author 会玩的洋洋
 * @since 2022-2-21
 * @param <E>
 */
public interface List<E> {

    /**
     * 错误返回值
     */
    static final int FAILED_RETURN = -1;

    /**
     * 清空所有元素
     */
    void clear();

    /**
     * 元素数量
     * @return int
     */
    int size();

    /**
     * 判断是否空
     * @return boolean
     */
    boolean isEmpty();
    /**
     * 是否包含某个元素
     * @param element 判断是否存在的元素值
     * @return boolean
     */
    boolean contains(E element);

    /**
     * 添加元素到尾部
     * @param element 添加的元素值
     */
    void add(E element) ;

    /**
     * 获取index位置的元素
     * @param index 获取的索引
     * @return E
     */
    E get(int index);

    /**
     * 设置index下标的元素
     * 返回覆盖的数
     * @param index 更改元素的索引
     * @param element 新元素值
     * @return E
     */
    E set(int index, E element);

    /**
     * 在index位置插入一个元素
     * @param index 要插入的位置
     * @param element 插入的元素
     */
    void add(int index, E element);

    /**
     * 删除index位置的元素
     * @param index 删除的位置
     * @return E
     */
    E remove(int index);

    /**
     * 查看元素的索引
     * @param element 查看该元素的下标
     * @return int
     */
    int indexOf(E element);

}
